package top.lshaci.learning.pdfqr;

import lombok.Data;

import java.util.function.Function;

/**
 * PdfOtherImage
 *
 * @author lshaci
 * @version 1.0.3
 * @since 1.0.3
 */
@Data
public class PdfOtherImage {

    /**
     * 存储图像的字节流
     * 用于在内存中保存图像的二进制数据，便于快速访问和处理
     */
    private byte[] bytes;

    /**
     * 图像的名称
     * 用于标识特定的图像，方便在日志或错误消息中引用
     */
    private String name;

    /**
     * X轴坐标转换函数
     * 根据给定的PDF页面宽度，返回对应的浮点数坐标
     */
    private Function<Float, Float> xfunc;

    /**
     * Y轴坐标转换函数
     * 根据给定的PDF页面高度，返回对应的浮点数坐标
     */
    private Function<Float, Float> yfunc;

    /**
     * 图像的宽度
     * 以浮点数表示，允许在计算或渲染过程中进行精确的尺寸调整
     */
    private Float width;

    /**
     * 图像的高度
     * 与宽度一样，使用浮点数表示，以便在图像处理中提供更高的精度
     */
    private Float height;

    /**
     * 构造函数用于初始化PdfOtherImage对象
     *
     * @param bytes 图像的字节数组，用于存储图像的二进制数据
     * @param name  图像的名称，用于标识图像
     */
    public PdfOtherImage(byte[] bytes, String name) {
        // 存储图像的字节数组
        this.bytes = bytes;
        // 存储图像的名称
        this.name = name;
        // 初始化xfunc为一个始终返回100F的函数，用于确定图像的x坐标
        this.xfunc = w -> 100F;
        // 初始化yfunc为一个从高度中减去200的函数，用于确定图像的y坐标
        this.yfunc = h -> h - 200;
        // 设置图像的宽度为150F
        this.width = 150F;
        // 设置图像的高度为150F
        this.height = 150F;
    }
}
